package com.bzkj.quality.mapper;


import com.bzkj.quality.domain.QmsCheckDTO;
import com.bzkj.quality.domain.QmsMaterialInfo;
import org.apache.ibatis.annotations.Param;

/**
 * @projectName: bzkj-wms
 * @package: com.bzkj.inventory.mapper
 * @className: QMSMapper
 * @description: QMS系统数据持久层
 * @author: C1309
 * @createDate: 2024年11月07日
 * @version: v1.0
 */
public interface QmsMapper {

    /**
     * 获取物料信息
     *
     * @param cgeneralbid 明细行
     * @param vbillcode   单据号
     * @param suffix      表名后缀
     * @return 查询结果
     */
    QmsMaterialInfo getMaterialInfo(@Param("suffix") String suffix,
                                    @Param("cgeneralbid") String cgeneralbid,
                                    @Param("vbillcode") String vbillcode);


    /**
     * 更新明细状态
     *
     * @param vbillcode   单据号
     * @param cgeneralbid 表体主键
     * @return 更新结果
     */
    int updateBillAndDetail(@Param("suffix") String suffix,
                            @Param("cgeneralbid") String cgeneralbid,
                            @Param("vbillcode") String vbillcode);

    /**
     * 插入QMS请验数据
     *
     * @param qmsCheckInfo 请验数据
     * @return 影响行数
     */
    int insertQmsInfo(QmsCheckDTO qmsCheckInfo);

    /**
     * 获取表体主键
     *
     * @param vbillcode   单据号
     * @param pkMaterial  物料主键
     * @param pkBatchcode 批次主键
     * @param vbatchcode  批次号
     * @param suffix      表名后缀
     * @return 表体主键
     */
    String getBid(@Param("vbillcode") String vbillcode,
                  @Param("pkMaterial") String pkMaterial,
                  @Param("pkBatchcode") String pkBatchcode,
                  @Param("vbatchcode") String vbatchcode,
                  @Param("suffix") String suffix);

    /**
     * 根据物料主键和批次号查询单据号
     *
     * @param pkMaterial 物料主键
     * @param vbatchcode 批次号
     * @return
     */
    String selectVbillcode(@Param("pkMaterial") String pkMaterial, @Param("vbatchcode") String vbatchcode);

    /**
     * 获取期初复验物料信息
     * @param id 库存ID
     * @return 查询结果
     */
    QmsMaterialInfo getChenChenMaterialInfo(String id);
}
